Lexical norms from Lancaster Sensorimotor Norms

Single predictor models using Lancaster Sensorimotor Norms.

%load_ext autoreload
%autoreload 2
from tools.create import create_single_models
from tools.base import (dump_collection, load_collection, 
                        flatten_collection, compute_metrics,
                        _extract_regressors)
from tools.viz import (plot_regressor, plot_regressor,
                       plot_metrics, plot_contrast_by_dataset, plot_contrast_by_analysis,
                       plot_analysis_grid)
from pyns import Neuroscout
import numpy as np
from matplotlib import pyplot as plt
from pathlib import Path
%matplotlib inline

Set up API by importing credentials as environment variables.

api = Neuroscout()

Define predictors and confounds

predictors = ['lancastersensorimotornorms_Visual.mean', 'lancastersensorimotornorms_Auditory.mean',
             'lancastersensorimotornorms_Olfactory.mean', 'lancastersensorimotornorms_Haptic.mean',
             'lancastersensorimotornorms_Gustatory.mean', 'lancastersensorimotornorms_Interoceptive.mean',
             'lancastersensorimotornorms_Foot_leg.mean', 'lancastersensorimotornorms_Hand_arm.mean',
             'lancastersensorimotornorms_Head.mean', 'lancastersensorimotornorms_Mouth.mean',
             'lancastersensorimotornorms_Torso.mean']
confounds = ['a_comp_cor_00', 'a_comp_cor_01', 'a_comp_cor_02', 'a_comp_cor_03', 'a_comp_cor_04', 'a_comp_cor_05', 'trans_x', 'trans_y', 'trans_z', 'rot_x', 'rot_y', 'rot_z']
control = ['speech']

Create single predictor models

transformations = [{"Name": "Scale", 
                    "Demean": True, 
                    "Rescale": True,
                    "ReplaceNA": "after", 
                    "Input": [p]} for p in predictors]
single_models = create_single_models(predictors, confounds, control=control,
                                     transformations=transformations)
filename = Path('models') / 'lexical_sensorimotor_norms.json'
dump_collection(single_models, filename)
single_models = load_collection(filename)

Generate reports

for (pred, dataset, task), model in flatten_collection(single_models):
    model.generate_report(run_id=model.runs[0])
for p in predictors:
    single_models[p]['Budapest']['movie'].plot_report()

Inspect regressors

df = _extract_regressors(single_models)
plot_regressor('distribution', df=df, split_by='hue', color=None, aspect=3, hist=None, rug=True)
_images/Lexical Sensorimotor Norms_20_0.svg_images/Lexical Sensorimotor Norms_20_1.svg_images/Lexical Sensorimotor Norms_20_2.svg_images/Lexical Sensorimotor Norms_20_3.svg_images/Lexical Sensorimotor Norms_20_4.svg_images/Lexical Sensorimotor Norms_20_5.svg_images/Lexical Sensorimotor Norms_20_6.svg_images/Lexical Sensorimotor Norms_20_7.svg_images/Lexical Sensorimotor Norms_20_8.svg_images/Lexical Sensorimotor Norms_20_9.svg_images/Lexical Sensorimotor Norms_20_10.svg
plot_regressor('timeseries', df=df, split_by='row', height=1.2, aspect=10)
_images/Lexical Sensorimotor Norms_21_0.svg_images/Lexical Sensorimotor Norms_21_1.svg_images/Lexical Sensorimotor Norms_21_2.svg_images/Lexical Sensorimotor Norms_21_3.svg_images/Lexical Sensorimotor Norms_21_4.svg_images/Lexical Sensorimotor Norms_21_5.svg_images/Lexical Sensorimotor Norms_21_6.svg_images/Lexical Sensorimotor Norms_21_7.svg_images/Lexical Sensorimotor Norms_21_8.svg_images/Lexical Sensorimotor Norms_21_9.svg_images/Lexical Sensorimotor Norms_21_10.svg
agg_df = compute_metrics(df=df, aggfunc=[np.mean, np.std, np.var])
plot_metrics(agg_df, metrics=['mean', 'std', 'var'],
             sns_function='barplot', height=3, aspect=1)
_images/Lexical Sensorimotor Norms_23_0.svg_images/Lexical Sensorimotor Norms_23_1.svg_images/Lexical Sensorimotor Norms_23_2.svg_images/Lexical Sensorimotor Norms_23_3.svg_images/Lexical Sensorimotor Norms_23_4.svg_images/Lexical Sensorimotor Norms_23_5.svg_images/Lexical Sensorimotor Norms_23_6.svg_images/Lexical Sensorimotor Norms_23_7.svg_images/Lexical Sensorimotor Norms_23_8.svg_images/Lexical Sensorimotor Norms_23_9.svg_images/Lexical Sensorimotor Norms_23_10.svg

Compile models

for (pred, dataset, task), model in flatten_collection(single_models):
    if model.get_status()['status'] == 'DRAFT':
        model.private = False
        model.push()
        model.compile()
    else:
        print(f'{pred} {model.status} for {dataset}')
lancastersensorimotornorms_Auditory.mean PASSED for Budapest
lancastersensorimotornorms_Auditory.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Auditory.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Auditory.mean PASSED for Life
lancastersensorimotornorms_Auditory.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Auditory.mean PASSED for Raiders
lancastersensorimotornorms_Auditory.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Auditory.mean PASSED for Sherlock
lancastersensorimotornorms_Auditory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Auditory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Foot_leg.mean PASSED for Budapest
lancastersensorimotornorms_Foot_leg.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Foot_leg.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Foot_leg.mean PASSED for Life
lancastersensorimotornorms_Foot_leg.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Foot_leg.mean PASSED for Raiders
lancastersensorimotornorms_Foot_leg.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Foot_leg.mean PASSED for Sherlock
lancastersensorimotornorms_Foot_leg.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Foot_leg.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Gustatory.mean PASSED for Budapest
lancastersensorimotornorms_Gustatory.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Gustatory.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Gustatory.mean PASSED for Life
lancastersensorimotornorms_Gustatory.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Gustatory.mean PASSED for Raiders
lancastersensorimotornorms_Gustatory.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Gustatory.mean PASSED for Sherlock
lancastersensorimotornorms_Gustatory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Gustatory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Hand_arm.mean PASSED for Budapest
lancastersensorimotornorms_Hand_arm.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Hand_arm.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Hand_arm.mean PASSED for Life
lancastersensorimotornorms_Hand_arm.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Hand_arm.mean PASSED for Raiders
lancastersensorimotornorms_Hand_arm.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Hand_arm.mean PASSED for Sherlock
lancastersensorimotornorms_Hand_arm.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Hand_arm.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Haptic.mean PASSED for Budapest
lancastersensorimotornorms_Haptic.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Haptic.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Haptic.mean PASSED for Life
lancastersensorimotornorms_Haptic.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Haptic.mean PASSED for Raiders
lancastersensorimotornorms_Haptic.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Haptic.mean PASSED for Sherlock
lancastersensorimotornorms_Haptic.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Haptic.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Head.mean PASSED for Budapest
lancastersensorimotornorms_Head.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Head.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Head.mean PASSED for Life
lancastersensorimotornorms_Head.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Head.mean PASSED for Raiders
lancastersensorimotornorms_Head.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Head.mean PASSED for Sherlock
lancastersensorimotornorms_Head.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Head.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Interoceptive.mean PASSED for Budapest
lancastersensorimotornorms_Interoceptive.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Interoceptive.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Interoceptive.mean PASSED for Life
lancastersensorimotornorms_Interoceptive.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Interoceptive.mean PASSED for Raiders
lancastersensorimotornorms_Interoceptive.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Interoceptive.mean PASSED for Sherlock
lancastersensorimotornorms_Interoceptive.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Interoceptive.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Mouth.mean PASSED for Budapest
lancastersensorimotornorms_Mouth.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Mouth.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Mouth.mean PASSED for Life
lancastersensorimotornorms_Mouth.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Mouth.mean PASSED for Raiders
lancastersensorimotornorms_Mouth.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Mouth.mean PASSED for Sherlock
lancastersensorimotornorms_Mouth.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Mouth.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Olfactory.mean PASSED for Budapest
lancastersensorimotornorms_Olfactory.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Olfactory.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Olfactory.mean PASSED for Life
lancastersensorimotornorms_Olfactory.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Olfactory.mean PASSED for Raiders
lancastersensorimotornorms_Olfactory.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Olfactory.mean PASSED for Sherlock
lancastersensorimotornorms_Olfactory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Olfactory.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Torso.mean PASSED for Budapest
lancastersensorimotornorms_Torso.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Torso.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Torso.mean PASSED for Life
lancastersensorimotornorms_Torso.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Torso.mean PASSED for Raiders
lancastersensorimotornorms_Torso.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Torso.mean PASSED for Sherlock
lancastersensorimotornorms_Torso.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Torso.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Visual.mean PASSED for Budapest
lancastersensorimotornorms_Visual.mean PASSED for HealthyBrainNetwork
lancastersensorimotornorms_Visual.mean PASSED for LearningTemporalStructure
lancastersensorimotornorms_Visual.mean PASSED for Life
lancastersensorimotornorms_Visual.mean PASSED for ParanoiaStory
lancastersensorimotornorms_Visual.mean PASSED for Raiders
lancastersensorimotornorms_Visual.mean PASSED for SchematicNarrative
lancastersensorimotornorms_Visual.mean PASSED for Sherlock
lancastersensorimotornorms_Visual.mean PASSED for SherlockMerlin
lancastersensorimotornorms_Visual.mean PASSED for SherlockMerlin
' '.join([a[1].hash_id for a in flatten_collection(single_models)])
'Ma4P1 M8Lry wQDrk wOVKP MXmXD A1GYY AVr1k Abn5Z MnP5g wWVO5 M4jXg M34X8 wl85e MDzp4 wQoez 9Bb77 AYXYb w0vVN wK375 Aobla 97pWO wgjXY Aop5J wlyGp AxkKD A6mPp MPK73 wJJ7p M34Xz AYXYr A251p Mzqrj AxBl6 AVrxa A1G16 M8LG3 AdpVB wOVPd MXmPK AbndV 9L2lz MNW0Z wK2B7 AZyB2 MvbQb 9eK5k M5Q0P Mmvq3 Mp8xb wyDod MNQJl wWVJr wJ3Yb AqbYb MaqV4 MGb4l 9EW70 wjvqP 9Lq4p 97vZe wkV2y MDzpo A6oKd wK37j Aoblm w0vVD wQoel A6mPQ wlyGX AxkKb M55Px M4nmG M37DP M5Qm6 9eKb6 MNW4N A2YmL AZy01 MvbK7 Mmvlx wjN40 MGbx3 w0g33 wjv5X 9LqDV Maq5J Aqb5O 97voB wkK53 M4nQz 9eya7 wyDz0 AYybj MPKvE A6m4Q wgjWR MR2lg wly6X Axkrb wJJ4m AqQm8 9BbWn MD1Gm w0v3D wK3Bj wQorl MDzGo Aob5m Ar65Q MzqJ5'

Results

flat_models = flatten_collection(single_models)
plt.rcParams.update({'font.family': 'monospace'})
plot_contrast_by_analysis(flat_models, contrasts=predictors,
                          vmax=10, display_mode='z', figsize=(12,15),
                          threshold=1.96, colorbar=False)
_images/Lexical Sensorimotor Norms_29_0.png _images/Lexical Sensorimotor Norms_29_1.png _images/Lexical Sensorimotor Norms_29_2.png _images/Lexical Sensorimotor Norms_29_3.png _images/Lexical Sensorimotor Norms_29_4.png _images/Lexical Sensorimotor Norms_29_5.png